#include <REGX52.H>
#include "OneWire.h"



/**
  * @brief  DHT22c初始化
  * @param  无
  * @retval 无
  */
unsigned char DHT22_Init(void)
{
	unsigned char ack;
	OneWire_Start();
	ack=OneWire_Ack();
	return ack;
}


//从DHT22读取一次数据
//temp:温度值(范围:-40--80°)
//humi:湿度值(范围:0%--99.9%)
//返回值：0,正常;    1,读取失败
/**
  * @brief  DHT22c读取数据
* @param  int 10倍温度，int 10倍湿度
  * @retval 无
  */
unsigned char DHT22_Read_Data(int *temp,int *humi)  
{        
 	unsigned char buf[5];//8位，所以用char 类型
	unsigned char i;
	EA=0;
	DHT22_Init();
	for(i=0;i<5;i++)
	{
		buf[i]=OneWire_ReceiveByte();
	}
//	buf[0]=OneWire_ReceiveByte();
//	buf[1]=OneWire_ReceiveByte();
//	buf[2]=OneWire_ReceiveByte();
//	buf[3]=OneWire_ReceiveByte();
//	buf[4]=OneWire_ReceiveByte();
	OneWire_Release();
	EA=1;
	if((unsigned char)(buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
		{
			*humi=((buf[0]*256)+buf[1]);
			*temp=((buf[2]*256)+buf[3]);		
			return 0;
		}
	return 1;
}

